# 1、编写函数，求1+2+3+…N的和
# def GetSum(n):
#     sum = 0
#     for i in range(n+1):
#         sum+=i
#     return sum
# print(GetSum(5)) # 1+2+3+4+5



# 2、编写一个函数，求多个数中的最大值
# 解题思路：列表排序
# def max(*a):
#     new_list = []
#     for i in a:
#         new_list.append(i)
#     new_list.sort(reverse=True) # true 升序
#     return new_list[0]
#
#
# print(max(99, 10, 23, 101))


# 3、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串
# def newstr(str):
#     str_ = ""
#     new = []
#     for i in range(65,123):
#         if i not in (91,92,93,94,95,96):
#             new.append(i)
#
#     for i in str:
#         if ord(i) in new:
#             str_+=i
#     return str_
#
# print(newstr("asdasd123456,./[]、\?p123asdqwerty——^")) # asdasdasdqwerty


# print(ord("Z")) #  A65  a97  122



# 4、写一个函数，求多个数的平均值
# def Avg(*a):
#     sum = 0
#     for i in a:
#         sum+=i
#     return sum//len(a)
#
# print(Avg(12,14,13))


# 5、写一个自己的len函数，统计指定序列中元素的个数
# 计数器
# def Len(*a):
#     sum = 0
#     for i in a:
#         sum+=1
#     return sum
#
# print(Len(12,14,13))



# 6、写一个自己的max函数，获取指定序列中元素的最大值。如果序列是字典，取字典值的最大值
# def max(ran):
#     new = []
#     try:
#         if isinstance(ran,dict):
#             for i in ran.values():
#                 new.append(i)
#             new.sort(reverse=True)
#             return new[0]
#         else:
#             return len(ran)
#     except:
#         return "输入的是数字或者小数类型，长度不支持统计"
#
#
# print(max({"a": "asd", "b": "asdc"}))
# print(max("asdqwe"))
# print(max([1,2,3,4,5]))
# print(max([-100]))
# print(max(100))


# 7、写函数，判断用户传入的对象（字符串，列表，元组）长度是否大于5 # todo：讲过了

# 8、封装函数，可以判断一个数字是否为偶数
# def ou(num):
#     if num%2==0:
#         return "是偶数"
#     else:
#         return "不是偶数"


# 9、封装函数，可以实现1-n之间所有偶数的打印


# 9.1、封装函数，可以实现1-n之间所有偶数的和
# def GetSum(n):
#     sum = 0
#     if n %2==0:
#         for i in range(n+1):
#             if i%2==0:
#                 sum+=i
#     else:
#         for i in range(n):
#             if i%2==0:
#                 sum+=i
#     return sum
# print(GetSum(9)) # 2+4+6+8


#10、定义一个函数，向函数内传入形参num, num1, num2，如果num小于100，则计算num1
# 和 num2的积并打印；否则计算num1和num2的和，然后打印输出；
# def math(num,num1,num2):
#     if num < 100:
#         print(num1 * num2)
#     else:
#         print(num1+num2)


# 11 、定义一个函数，向函数内传入形参username，password，当username值为josh且password值为字符串josh123时，
# 返回“登录成功”；否则返回“请重新登录” # todo：略,讲过了

# 12、封装函数，可以完成列表的倒序，不使用内置函数（解题思路：冒泡排序）
# def sort_(arrays):
#     for i in range(len(arrays)): # 第一层循环
#         for j in range(len(arrays)-i): #  第二层循环，主要目的是为了两个数去比对
#             if arrays[i] > arrays[j]: # 0 1
#                 arrays[i],arrays[j] = arrays[j],arrays[i]
#     return arrays
# print(sort_([99,101,96,999]))

#13、列表深度不可知，并且列表内部还会有二维数组，要求拼接出的新列表从左到有面顺序不变
# 举例： list = [123,[1,2,3],456,[7,8,9]]
# 解题方向：递归
list_ = [123,[1,2,3],456,[7,8,9]] # list  [123,1,2,3,456]
# todo：结果 [123,1,2,3,456,7,8,9]
#第一步：获取数据，造数据
#第二步：处理数据
#第三步：返回数据
# def new(arraylist):
#     new_list = []
#     for i in arraylist: # 获取数据
#         # 判断，里面的结构有没有二维数组
#         if isinstance(i,list):
#             new_list.extend(i) # 追加到列表末尾
#         else:
#             new_list.append(i)
#     return new_list
# a = [123,999]
# b = [1,2,3]
# c = []
#
#
# c.extend(a) # 空列表收集a
# c.extend(b) # 空列表收集b
# print(c) # a+b
# a = 5
# try:
#     print(a)
# except:
#     print("你a没定义哈")
# else:
#     print("你a定义了啊 ，那我执行了啊")
# finally:
#     print("不管a定义没定义，我都执行")
